package cn.sc.summer.mybatis.enums;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
 * 枚举类型：表结构自动更新类型，已代码中的po类作为基准进行数据库表比对
 *
 * @author a-xin
 * @date 2024/8/26 14:01
 */
@Getter
@AllArgsConstructor
public enum MySqlTableEngine {

    /**
     * InnoDB 用于事务处理应用程序，具有众多特性，包括 ACID 事务支持。如果应用中需要执行大量的 INSERT 或 UPDATE 操作，则应该使用 InnoDB，这样可以提高多用户并发操作的性能
     */
    INNODB("InnoDB"),

    /**
     * MyISAM 管理非事务表。它提供高速存储和检索，以及全文搜索能力。如果应用中需要执行大量的 SELECT 查询，那么 MyISAM 是更好的选择
     */
    MY_ISAM("MyISAM"),

    /**
     * MEMORY 存储引擎将所有数据保存在 RAM 中，所以该存储引擎的数据访问速度快，但是安全上没有保障。MEMORY 对表的大小有限制，太大的表无法缓存在内存中。由于使用 MEMORY 存储引擎没有安全保障，所以要确保数据库异常终止后表中的数据可以恢复。
     */
    MEMORY("MEMORY"),
    ;

    private final String desc;

}
